package com.qrxl.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfigurer implements WebMvcConfigurer {
    @Autowired
    UserInterceptor userInterceptor;
//
//    // 这个方法是用来配置静态资源的，比如html，js，css，等等
//    @Override
//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//    }

    // 这个方法用来注册拦截器，我们自己写好的拦截器需要通过这里添加注册才能生效
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册TestInterceptor拦截器
        InterceptorRegistration registration = registry.addInterceptor(userInterceptor);
        registration.addPathPatterns("/**");                      //所有路径都被拦截
        registration.excludePathPatterns(                         //添加不拦截路径
                "/user/userLogin/v1/login",      //登录
                "/user/userLogin/v1/userExist",      //判断用户名是否存在
                "/doc.html",       //文档
                "/swagger-resources/**",       //文档
                "/webjars/**",       //文档
                "/error/**",       //文档
                "/common/dict/v1/getDict",       //字典
                "/common/provinceCityArea/v1/provinceList",       //字典
                "/common/provinceCityArea/v1/cityList",       //字典
                "/common/provinceCityArea/v1/areaList",     //字典
                "/common/file/v1/upload",     //字典
                "/common/message/v1/sendCode",     //字典
                "/common/message/v1/uploadAhdData",     //字典
                "/favicon.ico",       //字典
                "/oss/upload/**"
        );
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        /*registry.addMapping("/**").
                allowedOrigins("*"). //允许跨域的域名，可以用*表示允许任何域名使用
                allowedMethods("*"). //允许任何方法（post、get等）
                allowedHeaders("*"). //允许任何请求头
                allowCredentials(true). //带上cookie信息
                exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L); //maxAge(3600)表明在3600秒内，不需要再发送预检验请求，可以缓存该结果*/
    }
}
